package tech.aistar.corejava.day18;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author success
 * @version 1.0
 * @description:本类用来演示:
 * @date 2019/8/7 0007
 */
public class ListStreamDemo {
    public static void main(String[] args) {
        //将list转换成Stream对象

        List<Integer> list = new ArrayList<>();
        list.add(2001);
        list.add(3001);
        list.add(3001);
        list.add(5001);
        list.add(500);
        list.add(100);
        list.add(100);
        list.add(200);
        list.add(200);

        //list.stream().distinct();

        //distinct - 去重        -
        //sorted - 排序     ->排序
        //filter - 过滤    -> 过滤
        //count - 统计元素的个数
        //reduce
        //limit
        //collect
        //allMatch
        //anyMatch

        //对原来的集合list没有造成影响
//        list.stream().sorted((o1, o2) -> {
//            if(o1>o2)
//                return 1;
//            else if(o1<o2)
//                return -1;
//            return 0;
//        });

        //List<Integer> sortList = list.stream().sorted(((o1, o2) -> o1-o2)).collect(Collectors.toList());

        //排重
        //List<Integer> distinct = list.stream().distinct().collect(Collectors.toList());
        //System.out.println(distinct);

        //取出集合前几个
        //List<Integer> before = list.stream().limit(4).collect(Collectors.toList());
        //System.out.println(before);

        //集合的大小 - 肯定比size()性能高
        //long size = list.stream().count();
        //System.out.println(size);

//        List<Integer> filterList = list.stream().filter(new Predicate<Integer>() {
//            @Override
//            public boolean Test(Integer integer) {
//                return false;
//            }
//        });

        //找出来 n==200
        List<Integer> filterList = list.stream().filter(n-> n==200).collect(Collectors.toList());

        System.out.println(filterList);
    }
}
